// =====================================================================================
// 
//       Filename:  Nave.hh
// 
//    Description:  Interfaccia della classe astratta Nave
// 
//         Author:  Davide Poletti , davide.pole@gmail.com
//					Paolo Pigato , p.pigato@hotmail.com	
//        Company:  P&P.cpp
// 
// =====================================================================================
#ifndef  NAVE_INC
#define  NAVE_INC

#include <utility>
#include <iostream>
using namespace std;

class Nave
{
    private:
        pair<int, int> _posizione;
        int _orientamento;
        bool _affondata;
        int _colpita;

    public:  
        Nave();
        Nave(pair<int, int> posizione, int orientamento);

        void incrementa_colpi(){_colpita++;}	
        void affonda() {_affondata = true;}
        pair<int, int> posizione() {return _posizione;}
        int orientamento() {return _orientamento;}
        bool affondata() {return _affondata;}
        int colpita() {return _colpita;}
        virtual int dimensione() const = 0;

        /* Restituisce l'esito secondo la seguente codifica:
         * 2: colpito
         * 3: affondato
         */
        virtual int colpisci() = 0;
};
#endif // ----- #ifndef NAVE_INC  -----
